home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 5817 / 5817.xpi / chrome / content / extManager.js < prev    next >
Text File  |  2010-02-11  |  8KB  |  270 lines

  1. function SMExtensionManager(objDb) {
  2.   this.m_db = Database;
  3.   this.m_tbl = sm_prefsBranch.getCharPref("tableForExtensionManagement");
  4. };
  5.  
  6. SMExtensionManager.prototype = {
  7.   //variable to handle the current query in query history
  8.   m_queryId: null,
  9.   
  10.   m_bSetUsageDone: false,
  11.   //boolean value: true if m_tbl exists, or is explicitly set to true
  12.   m_bUseConfig: false,
  13.  
  14.   
  15.   m_oColStates: {},
  16.  
  17.   _init: function(dbPath) {
  18.     //if the table does not exist, create it
  19.     if (!this.m_db.tableExists(this.m_tbl))  {
  20.       if (!this.m_bUseConfig)
  21.         return false;
  22.  
  23.       var aQueries = [];
  24.       aQueries.push("create table " + this.m_tbl + " (`id` integer primary key, `type` text not null , `value` text)");
  25.       this.m_db.executeTransaction(aQueries);
  26.     }
  27.     this.m_db.executeTransaction(["delete from " + this.m_tbl + " where `type` = 'Enabled'", "insert into " + this.m_tbl + "(`type`, `value`) values('Enabled', '1')"]);
  28.  
  29.     return true;
  30.   },
  31.  
  32.   setUsage: function(bUse, bImplicit) {
  33.     this.m_bSetUsageDone = true;
  34.  
  35.     this.m_bUseConfig = bUse;
  36.     if (this.m_bUseConfig) {
  37.       this._init();
  38.     }
  39.     else {
  40.       if (bImplicit) return;
  41.  
  42.       if (this.m_db.tableExists(this.m_tbl)) {
  43.         var aQueries = [];
  44.         aQueries.push();
  45.         var bRet = confirm(sm_getLFStr("extManager.dropTableConfirm", [this.m_tbl],1));
  46.         if (bRet)
  47.           this.m_db.executeTransaction(["drop table " + this.m_tbl]);
  48.         else
  49.           this.m_db.executeTransaction(["delete from " + this.m_tbl + " where `type` = 'Enabled'", "insert into " + this.m_tbl + "(`type`, `value`) values('Enabled', '0')"]);
  50.       }
  51.     }
  52.   },
  53.  
  54.   getUsage: function() {
  55.     //check for the table and enable type = 1 to return true;
  56.     if(this.m_db.tableExists(this.m_tbl)) {
  57.       this.m_db.selectQuery("select value from " + this.m_tbl + " where type = 'Enabled'");
  58.       var aData = this.m_db.getRecords();
  59.       if (aData.length > 0 && aData[0][0] == 1) {
  60.         return true;
  61.       }
  62.     }
  63.     return false;
  64.   },
  65.  
  66.   addQuery: function(sQuery) {
  67.     if (!this.m_bUseConfig)
  68.       return false;
  69.  
  70.     this.m_db.executeTransaction(["insert into " + this.m_tbl + "(type, value) values('QueryHistory', " + SQLiteFn.makeSqlValue(sQuery) + ")"]);
  71.     return true;
  72.   },
  73.  
  74.   //TODO: these functions must avoid saving and returning duplicates
  75.   getPrevSql: function() {
  76.     if (!this.m_bUseConfig)
  77.       return false;
  78.  
  79.     var crit2 = "";
  80.     if (this.m_queryId != null)
  81.       crit2 = " and id < " + this.m_queryId;
  82.  
  83.     this.m_db.selectQuery('select "id", "value" from ' + this.m_tbl + " where type = 'QueryHistory' and id = (select max(id) from " + this.m_tbl + " where type = 'QueryHistory' " + crit2 + ")");
  84.     var aData = this.m_db.getRecords();
  85.     if (aData.length > 0) {
  86.       this.m_queryId = aData[0][0];
  87.       return aData[0][1];
  88.     }
  89.  
  90.     return null;
  91.   },
  92.  
  93.   getNextSql: function() {
  94.     if (!this.m_bUseConfig)
  95.       return false;
  96.  
  97.     if (this.m_queryId == null)
  98.       return null;
  99.  
  100.     this.m_db.selectQuery("select id, value from " + this.m_tbl + " where type = 'QueryHistory' and id = (select min(id) from " + this.m_tbl + " where type = 'QueryHistory' and id > " + this.m_queryId + ")");
  101.     var aData = this.m_db.getRecords();
  102.     if (aData.length > 0) {
  103.       this.m_queryId = aData[0][0];
  104.       return aData[0][1];
  105.     }
  106.  
  107.     return null;
  108.   },
  109.  
  110.   clearSqlHistory: function() {
  111.     if (!this.m_bUseConfig)
  112.       return false;
  113.  
  114.     this.m_db.executeTransaction(["delete from " + this.m_tbl + " where type = 'QueryHistory'"]);
  115.     alert(sm_getLStr("extManager.deleteQueries") + this.m_tbl);
  116.     this.m_queryId = null;
  117.     return true;
  118.   },
  119.  
  120.   saveSqlByName: function(sQuery) {
  121.     if (!this.m_bUseConfig)
  122.       return false;
  123.  
  124.     var qName = prompt(sm_getLStr("extManager.qName.enter"), "");
  125.  
  126.     //if cancelled, abort
  127.     if (qName == "" || qName == null)
  128.       return false;
  129.  
  130.     var temp = this.getQueryList(qName);
  131.     if (temp.length > 0) {
  132.       alert(sm_getLStr("extManager.qName.exists"));
  133.       return false;
  134.     }
  135.  
  136.     this.m_db.executeTransaction(['INSERT INTO ' + this.m_tbl + '("type", "value") VALUES(' + SQLiteFn.makeSqlValue('NamedQuery:' + qName) + ', ' + SQLiteFn.makeSqlValue(sQuery) + ')']);
  137.     return true;
  138.   },
  139.  
  140.   getQueryList: function(sQueryName) {
  141.     if (!this.m_bUseConfig)
  142.       return false;
  143.  
  144.     var prefix = "NamedQuery:", criteria;
  145.     if (sQueryName == undefined)
  146.       criteria = "like '" + prefix + "%'";
  147.     else
  148.       criteria = "= '" + prefix + sQueryName + "'";
  149.  
  150.     try {
  151.     this.m_db.selectQuery('SELECT "type", "value" FROM ' + this.m_tbl + ' WHERE "type" ' + criteria + ' ORDER BY "type"');
  152.     } catch (e) {
  153.       alert(e);
  154.     }
  155.     var aData = this.m_db.getRecords();
  156.  
  157.     var aQueries = new Array();
  158.     var aTemp, sName;
  159.     for (var iC = 0; iC < aData.length; iC++)
  160.     {
  161.       sName = aData[iC][0].substring(prefix.length);
  162.       aTemp = [sName, aData[iC][1]];
  163.       aQueries.push(aTemp);
  164.     }
  165.  
  166.     return aQueries;
  167.   },
  168.  
  169.   goToLastQuery: function() {
  170.     if (!this.m_bUseConfig)
  171.       return false;
  172.  
  173.     this.m_queryId = null;
  174.     return true;
  175.   },
  176.   
  177.   getStructTreeState: function() {
  178.     if (!this.m_bUseConfig)
  179.       return false;
  180.  
  181.     var sEc = "StructTree:ExpandedCategories", sEo = "StructTree:ExpandedObjects";
  182.     var aExpand = [["all-table"],[]];
  183.  
  184.     this.m_db.selectQuery('select "id", "value" from ' + this.m_tbl + " where type = '" + sEc + "'");
  185.     var aData = this.m_db.getRecords();
  186.     if (aData.length > 0) {
  187.       aExpand[0] = aData[0][1].split(",");
  188.     }
  189.     this.m_db.selectQuery('select "id", "value" from ' + this.m_tbl + " where type = '" + sEo + "'");
  190.     var aData = this.m_db.getRecords();
  191.     if (aData.length > 0) {
  192.       aExpand[1] = aData[0][1].split(",");
  193.     }
  194.  
  195.     return aExpand;
  196.   },
  197.  
  198.   setStructTreeState: function(aExpand) {
  199.     if (!this.m_bUseConfig)
  200.       return false;
  201.  
  202.     var sEc = "StructTree:ExpandedCategories", sEo = "StructTree:ExpandedObjects";
  203.  
  204.     var q1 = "delete from " + this.m_tbl + " where type = '" + sEc + "' OR type = '" + sEo + "'";
  205.     var q2 = "insert into " + this.m_tbl + "(type, value) values('" + sEc + "', '" + aExpand[0].toString() + "')";
  206.     var q3 = "insert into " + this.m_tbl + "(type, value) values('" + sEo + "', '" + aExpand[1].toString() + "')";
  207.     this.m_db.executeTransaction([q1,q2,q3]);
  208.   },
  209.  
  210.   saveBrowseTreeColState: function(objType, objName, objState) {
  211.     var sEc = "BrowseTree:ColState:" + objType + ":" + objName;
  212.     this.m_oColStates[sEc] = objState;
  213.  
  214.     if (!this.m_bUseConfig) {
  215.       return false;
  216.     }
  217.  
  218.  
  219.     var q1 = "delete from " + this.m_tbl + " where type = '" + sEc + "'";
  220.     var q2 = "insert into " + this.m_tbl + "(type, value) values('" + sEc + "', '" + objState + "')";
  221.     this.m_db.executeTransaction([q1,q2]);
  222.   },
  223.  
  224.   getBrowseTreeColState: function(objType, objName) {
  225.     var sEc = "BrowseTree:ColState:" + objType + ":" + objName;
  226.     if (this.m_oColStates[sEc])
  227.       return this.m_oColStates[sEc];
  228.  
  229.     if (!this.m_bUseConfig)
  230.       return false;
  231.  
  232.     var aStr = "";
  233.     this.m_db.selectQuery("select value from " + this.m_tbl + " where type = '" + sEc + "'");
  234.     var aData = this.m_db.getRecords();
  235.     if (aData.length > 0) {
  236.       aStr = aData[0][0];
  237.       this.m_oColStates[sEc] = aStr;
  238.     }
  239.  
  240.     return aStr;
  241.   },
  242.  
  243.   getAttachedDbList: function() {
  244.     if (!this.m_bUseConfig)
  245.       return false;
  246.  
  247.     var sEc = "StructTree:AttachedDb";
  248.     var aAttached = [];
  249.  
  250.     this.m_db.selectQuery('select "value" from ' + this.m_tbl + " where type = '" + sEc + "'");
  251.     var aData = this.m_db.getRecords();
  252.     if (aData.length > 0) {
  253.       aAttached = JSON.parse(aData[0][0]);
  254.     }
  255.  
  256.     return aAttached;
  257.   },
  258.  
  259.   setAttachedDbList: function(aAttached) {
  260.     if (!this.m_bUseConfig)
  261.       return false;
  262.  
  263.     var sEc = "StructTree:AttachedDb";
  264.  
  265.     var q1 = "delete from " + this.m_tbl + " where type = '" + sEc + "'";
  266.     var q2 = "insert into " + this.m_tbl + "(type, value) values('" + sEc + "', '" + JSON.stringify(aAttached) + "')";
  267.     this.m_db.executeTransaction([q1,q2]);
  268.   }
  269. };
  270.